async function run($input, $output, $modules = modules) {

    /**发送应用卡片消息
       * 官方API：https://work.weixin.qq.com/api/doc/90000/90135/90236
       * 错误码查询工具：https://open.work.weixin.qq.com/devtool/query?e=
       * 
       * touser、toparty、totag不能同时为空
       */

    const wxworkApi = $modules.wxworkApi;
    //发送
    let sendCard = await wxworkApi.sendCard({
        touser: $input.touser,
        toparty: $input.toparty,
        totag: $input.totag,
        agentid: $input.agentid,
        title: $input.title,
        description: $input.description,
        url: $input.url,
        btntx: $input.btntx
    });

    /**
     * 如果部分接收人无权限或不存在，发送仍然执行，但会返回无效的部分（即invaliduser或invalidparty或invalidtag），常见的原因是接收人不在应用的可见范围内。
     * 如果全部接收人无权限或不存在，则本次调用返回失败，errcode为81013。
     * 返回包中的userid，不区分大小写，统一转为小写
     */
    $output.invaliduser = sendCard.invaliduser;
    $output.invalidparty = sendCard.invalidparty;
    $output.invalidtag = sendCard.invalidtag;
}
